<html>
<head>
<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script src="http://www.google.com/jsapi?autoload={'modules':[{'name':'visualization','version':'1','packages':['controls', 'charteditor']}]}"></script>
<script src="http://jquery-csv.googlecode.com/git/src/jquery.csv.js"></script>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script>
$(function() {
  google.load("visualization", "1", {packages:["corechart"]});

    var csv = $('#textInput').val();
    var data = $.csv.toArrays(csv, {
        onParseValue: $.csv.hooks.castToScalar
    });

    // Convert data for bar chart (averaging all digits)
    var timeData = {};  // type -> table
    var funcRowMap;

    for (var i = 1; i < data.length; i++) {
      var type = data[i][0];
      var func = data[i][1];
      var digit = data[i][2];
      var time = data[i][3];
      if (timeData[type] == null) {
        timeData[type] = [["Function", "Time (ns)"/*, { role: "style" }*/]];
        if (digit != 0)
          funcRowMap = {};
      }

      var table = timeData[type];
      
      if (digit != 0) {
        if (funcRowMap[func] == null)
          funcRowMap[func] = table.push([func, []/*, defaultColors[table.length - 1]*/]) - 1;
        
        table[funcRowMap[func]][1].push(time);
      }
      else
        table.push([func, time]);
    }

    // averaging
    for (var type in timeData) {
      var table = timeData[type];
      for (var i = 0; i < table.length; i++) {
        if (typeof(table[i][1]) == "object") {
          var sum = 0;
          for (var j = 0; j < table[i][1].length; j++)
            sum += table[i][1][j];
          table[i][1] = sum / table[i][1].length;
        }
      }
    }

    // Convert data for drawing line chart per sequential digit
    var timeDigitData = {}; // type -> table
    var funcColumnMap;

    for (var i = 1; i < data.length; i++) {
      var type = data[i][0];
      var func = data[i][1];
      var digit = data[i][2];
      var time = data[i][3];

      if (digit == 0)
        continue;

      if (timeDigitData[type] == null) {
        timeDigitData[type] = [["Digit"]];
        funcColumnMap = {};
      }

      var table = timeDigitData[type];

      if (funcColumnMap[func] == null)
        funcColumnMap[func] = table[0].push(func) - 1;

      var row;
      for (row = 1; row < table.length; row++)
        if (table[row][0] == digit)
          break;

      if (row == table.length)
        table.push([digit]);

    table[row][funcColumnMap[func]] = time;
  }

  for (var type in timeData) {
    $("#main").append(
      $("<a>", {name: type}),
      $("<h2>", {style: "padding-top: 70px; margin-top: -70px;"}).append(type)
    );

    $("#section").append($("<li>").append($("<a>", {href: "#" + type}).append(type)));

    drawTable(type, timeData[type]);
    drawBarChart(type, timeData[type]);
    if (timeDigitData[type] != null)
      drawDigitChart(type, timeDigitData[type]);
  }

  // Image download button
  $(".chart").each(function() {
    var chart = $(this);
    var d = $("#downloadDD").clone().css("display", "");
    $('li a', d).each(function() {
          $(this).click(function() {
              var svg = chart[0].getElementsByTagName('svg')[0].parentNode.innerHTML;
              svg=sanitize(svg);
              $('#imageFilename').val($("#title").html() + "_" + chart.data("filename"));
              $('#imageGetFormTYPE').val($(this).attr('dltype'));
              $('#imageGetFormSVG').val(svg);
              $('#imageGetForm').submit();
          });
      });   
    $(this).after(d);
  });

  // Show markdown button
  $(".tablechart").each(function() {
    var chart = $(this);
    var type = chart.data("type");
    var d = $("#showMD").clone().css("display", "");
    $('.collapse', d).first().attr("id", "tableMD" + type);
    $('button', d).first().attr("data-target","#tableMD" + type).click(function() {
      var markdown = DataTableToMarkdown(chart.data("data"));
      $('textarea', d).val(markdown).attr("rows", markdown.split("\n").length);
    });
    $(this).after(d);
  });

  // Add configurations
  var thisConfig = "corei7920@2.67_cygwin32_gcc4.8";
  var configurations = ["corei7920@2.67_cygwin32_gcc4.8","corei7920@2.67_cygwin64_gcc4.8","corei7920@2.67_win32_vc2013","corei7920@2.67_win64_vc2013"];

  for (var i in configurations) {
    var c = configurations[i];
    $("#configuration").append($("<li>", {class : (c == thisConfig ? "active" : "")}).append($("<a>", {href: c + ".html"}).append(c)));
  }
});

function drawTable(type, timeData) {
  var data = google.visualization.arrayToDataTable(timeData);
    data.addColumn('number', 'Speedup');
    data.sort([{ column: 1, desc: true }]);
    var formatter1 = new google.visualization.NumberFormat({ fractionDigits: 3 });
    formatter1.format(data, 1);

    var div = document.createElement("div");
    div.className = "tablechart";
    $(div).data("type", type).data("data", data);
    $("#main").append(div);
    var table = new google.visualization.Table(div);
    redrawTable(0);
    table.setSelection([{ row: 0, column: null}]);

    function redrawTable(selectedRow) {
      // Compute relative time using the first row as basis
      var basis = data.getValue(selectedRow, 1);
      for (var rowIndex = 0; rowIndex < data.getNumberOfRows(); rowIndex++)
        data.setValue(rowIndex, 2, basis / data.getValue(rowIndex, 1));

      var formatter = new google.visualization.NumberFormat({suffix: 'x'});
      formatter.format(data, 2); // Apply formatter to second column

      table.draw(data);
    }

    google.visualization.events.addListener(table, 'select',
    function() {
      var selection = table.getSelection();
      if (selection.length > 0) {
        var item = selection[0];
        if (item.row != null) {
          redrawTable(item.row);

          // Also update markdown
          var markdown = DataTableToMarkdown(data);
          $('textarea', $("#tableMD" + type)).val(markdown);
        }
      }
    });
}

function drawBarChart(type, timeData) {
  var defaultColors = ["#3366cc","#dc3912","#ff9900","#109618","#990099","#0099c6","#dd4477","#66aa00","#b82e2e","#316395","#994499","#22aa99","#aaaa11","#6633cc","#e67300","#8b0707","#651067","#329262","#5574a6","#3b3eac","#b77322","#16d620","#b91383","#f4359e","#9c5935","#a9c413","#2a778d","#668d1c","#bea413","#0c5922","#743411"];

  var data = google.visualization.arrayToDataTable(timeData);
  data.addColumn({ type: "string", role: "style" })
  for (var rowIndex = 0; rowIndex < data.getNumberOfRows(); rowIndex++)
    data.setValue(rowIndex, 2, defaultColors[rowIndex]);

  data.sort([{ column: 1, desc: true }]);
  var options = { 
    title: type,
    chartArea: {'width': '70%', 'height': '70%'},
    width: 800,
    height: 300,
    legend: { position: "none" },
    hAxis: { title: "Time (ns)" }
  };
  var div = document.createElement("div");
  div.className = "chart";
  $(div).data("filename", type + "_time");
  $("#main").append(div);
  var chart = new google.visualization.BarChart(div);

  chart.draw(data, options);
}

function drawDigitChart(type, timeDigitData) {
  var data = google.visualization.arrayToDataTable(timeDigitData);

  var options = { 
    title: type,
    chartArea: {'width': '70%', 'height': '80%'},
    hAxis: {
      title: "Digit",
      gridlines: { count: timeDigitData.length - 1 },
      maxAlternation: 1,
      minTextSpacing: 0
    },
    vAxis: {
      title: "Time (ns) in log scale",
      logScale: true,
      minorGridlines: { count: 10 },
      baseline: 0
    },
    width: 800,
    height: 600
  };
  var div = document.createElement("div");
  div.className = "chart";
  $(div).data("filename", type + "_timedigit");
  $("#main").append(div);
  var chart = new google.visualization.LineChart(div);

  chart.draw(data, options);
}

// http://jsfiddle.net/P6XXM/
function sanitize(svg) {
    svg = svg
        .replace(/\<svg/,'<svg xmlns="http://www.w3.org/2000/svg" version="1.1"')
        .replace(/zIndex="[^"]+"/g, '')
        .replace(/isShadow="[^"]+"/g, '')
        .replace(/symbolName="[^"]+"/g, '')
        .replace(/jQuery[0-9]+="[^"]+"/g, '')
        .replace(/isTracker="[^"]+"/g, '')
        .replace(/url\([^#]+#/g, 'url(#')
        .replace('<svg xmlns:xlink="http://www.w3.org/1999/xlink" ', '<svg ')
        .replace(/ href=/g, ' xlink:href=')
    /*.replace(/preserveAspectRatio="none">/g, 'preserveAspectRatio="none"/>')*/
    /* This fails in IE < 8
    .replace(/([0-9]+)\.([0-9]+)/g, function(s1, s2, s3) { // round off to save weight
    return s2 +'.'+ s3[0];
    })*/

    // IE specific
        .replace(/id=([^" >]+)/g, 'id="$1"')
        .replace(/class=([^" ]+)/g, 'class="$1"')
        .replace(/ transform /g, ' ')
        .replace(/:(path|rect)/g, '$1')
        .replace(/<img ([^>]*)>/gi, '<image $1 />')
        .replace(/<\/image>/g, '') // remove closing tags for images as they'll never have any content
        .replace(/<image ([^>]*)([^\/])>/gi, '<image $1$2 />') // closes image tags for firefox
        .replace(/width=(\d+)/g, 'width="$1"')
        .replace(/height=(\d+)/g, 'height="$1"')
        .replace(/hc-svg-href="/g, 'xlink:href="')
        .replace(/style="([^"]+)"/g, function (s) {
            return s.toLowerCase();
        });

    // IE9 beta bugs with innerHTML. Test again with final IE9.
    svg = svg.replace(/(url\(#highcharts-[0-9]+)&quot;/g, '$1')
        .replace(/&quot;/g, "'");
    if (svg.match(/ xmlns="/g).length == 2) {
        svg = svg.replace(/xmlns="[^"]+"/, '');
    }

    return svg;
}

function DataTableToMarkdown(dataTable) {
  var s = "|";
  var columnCount = dataTable.getNumberOfColumns();
  var rowCount = dataTable.getNumberOfRows();

  // compute columnWidths & padding
  var columnWidths = new Array();
  var columnPadRight = new Array();
  for (var columnIndex = 0; columnIndex < columnCount; columnIndex++) {
    columnWidths.push(dataTable.getColumnLabel(columnIndex).length);
    columnPadRight.push(dataTable.getColumnType(columnIndex) == 'number');
  }
  for (var rowIndex = 0; rowIndex < rowCount; rowIndex++)
    for (var columnIndex = 0; columnIndex < columnCount; columnIndex++)
      columnWidths[columnIndex] = Math.max(columnWidths[columnIndex], dataTable.getFormattedValue(rowIndex, columnIndex).length);

  function pad(columnIndex, s) {
    var spaces = Array(columnWidths[columnIndex] - s.length + 1).join(' ');
    return columnPadRight[columnIndex] ? spaces + s : s + spaces;
  }

  // header
  for (var columnIndex = 0; columnIndex < columnCount; columnIndex++)
    s += pad(columnIndex, dataTable.getColumnLabel(columnIndex)) + "|";
  s += "\n|";

  // header line
  for (var columnIndex = 0; columnIndex < columnCount; columnIndex++) {
    if (columnPadRight[columnIndex])
      s += Array(columnWidths[columnIndex]).join("-") + ":|";
    else
      s += Array(columnWidths[columnIndex] + 1).join("-") + "|";
  }
  s += "\n";

  // contents
  for (var rowIndex = 0; rowIndex < rowCount; rowIndex++) {
    s += "|";
    for (var columnIndex = 0; columnIndex < columnCount; columnIndex++)
      s += pad(columnIndex, dataTable.getFormattedValue(rowIndex, columnIndex)) + "|";
    s += "\n";
  }

  return s;
}
</script>
<style type="text/css">
@media (min-width: 800px) {
  .container {
    max-width: 800px;
  }
}
textarea {
  font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
}
.tablechart {
  width: 700px;
  margin: auto;
  padding-top: 20px;
  padding-bottom: 20px;
}
.chart {
  padding-top: 20px;
  padding-bottom: 20px;
}
body { padding-top: 70px; }
</style>
</head>
<body>
<div class="container">
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
  <div class="container">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="https://github.com/miloyip/itoa-benchmark"><span class="glyphicon glyphicon-home"></span> itoa-benchmark</a>
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      <ul class="nav navbar-nav">
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown">Configuration <span class="caret"></span></a>
          <ul class="dropdown-menu" role="menu" id="configuration">
          </ul>
        </li>
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown">Section <span class="caret"></span></a>
          <ul class="dropdown-menu" role="menu" id="section">
          </ul>
        </li>
      </ul>
      <p class="navbar-text navbar-right">Developed by <a href="https://github.com/miloyip" class="navbar-link">Milo Yip</a></p>
    </div><!-- /.navbar-collapse -->
  </div><!-- /.container-fluid -->
</nav>
<div class="page-header">
<h1 id="title">corei7920@2.67_cygwin32_gcc4.8</h1>
</div>
<div id="main"></div>
<h2>Source CSV</h2>
<textarea id="textInput" class="form-control" rows="5" readonly>
Type,Function,Digit,Time(ns)
u32toa_sequential,branchlut,1,5.880000
u32toa_sequential,branchlut,2,6.590000
u32toa_sequential,branchlut,3,6.560000
u32toa_sequential,branchlut,4,6.840000
u32toa_sequential,branchlut,5,10.990000
u32toa_sequential,branchlut,6,12.150000
u32toa_sequential,branchlut,7,13.290000
u32toa_sequential,branchlut,8,14.370000
u32toa_sequential,branchlut,9,18.110000
u32toa_sequential,branchlut,10,18.080000
u32toa_random,branchlut,0,20.737000
u32toa_sequential,count,1,6.950000
u32toa_sequential,count,2,10.140000
u32toa_sequential,count,3,12.770000
u32toa_sequential,count,4,15.640000
u32toa_sequential,count,5,17.900000
u32toa_sequential,count,6,21.710000
u32toa_sequential,count,7,25.090000
u32toa_sequential,count,8,29.110000
u32toa_sequential,count,9,31.790000
u32toa_sequential,count,10,35.380000
u32toa_random,count,0,31.249000
u32toa_sequential,countlut,1,5.340000
u32toa_sequential,countlut,2,6.160000
u32toa_sequential,countlut,3,8.080000
u32toa_sequential,countlut,4,8.560000
u32toa_sequential,countlut,5,12.980000
u32toa_sequential,countlut,6,13.360000
u32toa_sequential,countlut,7,14.980000
u32toa_sequential,countlut,8,14.800000
u32toa_sequential,countlut,9,16.910000
u32toa_sequential,countlut,10,17.790000
u32toa_random,countlut,0,22.175000
u32toa_sequential,lut,1,5.370000
u32toa_sequential,lut,2,6.780000
u32toa_sequential,lut,3,9.640000
u32toa_sequential,lut,4,11.950000
u32toa_sequential,lut,5,15.670000
u32toa_sequential,lut,6,16.190000
u32toa_sequential,lut,7,19.300000
u32toa_sequential,lut,8,20.720000
u32toa_sequential,lut,9,23.190000
u32toa_sequential,lut,10,24.980000
u32toa_random,lut,0,29.949000
u32toa_sequential,mwilson,1,6.460000
u32toa_sequential,mwilson,2,10.350000
u32toa_sequential,mwilson,3,13.930000
u32toa_sequential,mwilson,4,19.990000
u32toa_sequential,mwilson,5,23.570000
u32toa_sequential,mwilson,6,28.720000
u32toa_sequential,mwilson,7,32.960000
u32toa_sequential,mwilson,8,37.650000
u32toa_sequential,mwilson,9,41.070000
u32toa_sequential,mwilson,10,45.270000
u32toa_random,mwilson,0,40.281000
u32toa_sequential,naive,1,6.730000
u32toa_sequential,naive,2,10.400000
u32toa_sequential,naive,3,14.380000
u32toa_sequential,naive,4,18.950000
u32toa_sequential,naive,5,23.260000
u32toa_sequential,naive,6,27.220000
u32toa_sequential,naive,7,31.620000
u32toa_sequential,naive,8,35.760000
u32toa_sequential,naive,9,40.300000
u32toa_sequential,naive,10,44.270000
u32toa_random,naive,0,39.057000
u32toa_sequential,null,1,2.130000
u32toa_sequential,null,2,2.140000
u32toa_sequential,null,3,2.130000
u32toa_sequential,null,4,2.140000
u32toa_sequential,null,5,2.130000
u32toa_sequential,null,6,2.130000
u32toa_sequential,null,7,2.130000
u32toa_sequential,null,8,2.130000
u32toa_sequential,null,9,2.140000
u32toa_sequential,null,10,2.130000
u32toa_random,null,0,2.498000
u32toa_sequential,sprintf,1,174.820000
u32toa_sequential,sprintf,2,208.120000
u32toa_sequential,sprintf,3,221.280000
u32toa_sequential,sprintf,4,261.830000
u32toa_sequential,sprintf,5,292.010000
u32toa_sequential,sprintf,6,303.140000
u32toa_sequential,sprintf,7,328.080000
u32toa_sequential,sprintf,8,351.520000
u32toa_sequential,sprintf,9,351.690000
u32toa_sequential,sprintf,10,364.790000
u32toa_random,sprintf,0,301.278000
u32toa_sequential,sse2,1,5.700000
u32toa_sequential,sse2,2,6.500000
u32toa_sequential,sse2,3,6.780000
u32toa_sequential,sse2,4,6.410000
u32toa_sequential,sse2,5,10.840000
u32toa_sequential,sse2,6,11.800000
u32toa_sequential,sse2,7,12.980000
u32toa_sequential,sse2,8,13.920000
u32toa_sequential,sse2,9,10.970000
u32toa_sequential,sse2,10,11.780000
u32toa_random,sse2,0,19.861000
i32toa_sequential,branchlut,1,8.470000
i32toa_sequential,branchlut,2,9.230000
i32toa_sequential,branchlut,3,9.270000
i32toa_sequential,branchlut,4,9.450000
i32toa_sequential,branchlut,5,14.460000
i32toa_sequential,branchlut,6,15.370000
i32toa_sequential,branchlut,7,16.200000
i32toa_sequential,branchlut,8,18.010000
i32toa_sequential,branchlut,9,21.600000
i32toa_sequential,branchlut,10,21.750000
i32toa_random,branchlut,0,26.332000
i32toa_sequential,count,1,9.890000
i32toa_sequential,count,2,13.750000
i32toa_sequential,count,3,16.980000
i32toa_sequential,count,4,19.290000
i32toa_sequential,count,5,22.890000
i32toa_sequential,count,6,25.300000
i32toa_sequential,count,7,29.200000
i32toa_sequential,count,8,31.860000
i32toa_sequential,count,9,35.730000
i32toa_sequential,count,10,38.550000
i32toa_random,count,0,35.897000
i32toa_sequential,countlut,1,8.060000
i32toa_sequential,countlut,2,8.370000
i32toa_sequential,countlut,3,12.150000
i32toa_sequential,countlut,4,12.490000
i32toa_sequential,countlut,5,15.430000
i32toa_sequential,countlut,6,15.440000
i32toa_sequential,countlut,7,18.410000
i32toa_sequential,countlut,8,18.740000
i32toa_sequential,countlut,9,21.280000
i32toa_sequential,countlut,10,21.870000
i32toa_random,countlut,0,26.578000
i32toa_sequential,lut,1,7.220000
i32toa_sequential,lut,2,8.470000
i32toa_sequential,lut,3,11.710000
i32toa_sequential,lut,4,14.040000
i32toa_sequential,lut,5,19.170000
i32toa_sequential,lut,6,20.270000
i32toa_sequential,lut,7,23.320000
i32toa_sequential,lut,8,27.100000
i32toa_sequential,lut,9,31.550000
i32toa_sequential,lut,10,37.650000
i32toa_random,lut,0,38.749000
i32toa_sequential,mwilson,1,8.470000
i32toa_sequential,mwilson,2,13.500000
i32toa_sequential,mwilson,3,18.430000
i32toa_sequential,mwilson,4,22.610000
i32toa_sequential,mwilson,5,27.470000
i32toa_sequential,mwilson,6,33.280000
i32toa_sequential,mwilson,7,37.860000
i32toa_sequential,mwilson,8,41.810000
i32toa_sequential,mwilson,9,46.140000
i32toa_sequential,mwilson,10,53.050000
i32toa_random,mwilson,0,46.568000
i32toa_sequential,naive,1,8.130000
i32toa_sequential,naive,2,11.920000
i32toa_sequential,naive,3,16.440000
i32toa_sequential,naive,4,21.120000
i32toa_sequential,naive,5,24.610000
i32toa_sequential,naive,6,29.260000
i32toa_sequential,naive,7,33.440000
i32toa_sequential,naive,8,37.430000
i32toa_sequential,naive,9,48.600000
i32toa_sequential,naive,10,46.080000
i32toa_random,naive,0,46.664000
i32toa_sequential,null,1,2.570000
i32toa_sequential,null,2,2.570000
i32toa_sequential,null,3,2.570000
i32toa_sequential,null,4,2.570000
i32toa_sequential,null,5,2.570000
i32toa_sequential,null,6,2.570000
i32toa_sequential,null,7,2.570000
i32toa_sequential,null,8,2.570000
i32toa_sequential,null,9,2.570000
i32toa_sequential,null,10,2.570000
i32toa_random,null,0,2.498000
i32toa_sequential,sprintf,1,185.570000
i32toa_sequential,sprintf,2,218.120000
i32toa_sequential,sprintf,3,239.030000
i32toa_sequential,sprintf,4,279.900000
i32toa_sequential,sprintf,5,308.170000
i32toa_sequential,sprintf,6,320.510000
i32toa_sequential,sprintf,7,343.820000
i32toa_sequential,sprintf,8,367.510000
i32toa_sequential,sprintf,9,370.550000
i32toa_sequential,sprintf,10,389.600000
i32toa_random,sprintf,0,315.393000
i32toa_sequential,sse2,1,7.390000
i32toa_sequential,sse2,2,7.660000
i32toa_sequential,sse2,3,8.150000
i32toa_sequential,sse2,4,8.200000
i32toa_sequential,sse2,5,12.720000
i32toa_sequential,sse2,6,14.210000
i32toa_sequential,sse2,7,15.180000
i32toa_sequential,sse2,8,15.680000
i32toa_sequential,sse2,9,13.180000
i32toa_sequential,sse2,10,13.640000
i32toa_random,sse2,0,23.349000
u64toa_sequential,branchlut,1,7.480000
u64toa_sequential,branchlut,2,8.300000
u64toa_sequential,branchlut,3,8.210000
u64toa_sequential,branchlut,4,8.300000
u64toa_sequential,branchlut,5,10.630000
u64toa_sequential,branchlut,6,11.420000
u64toa_sequential,branchlut,7,12.920000
u64toa_sequential,branchlut,8,12.230000
u64toa_sequential,branchlut,9,35.220000
u64toa_sequential,branchlut,10,35.120000
u64toa_sequential,branchlut,11,35.460000
u64toa_sequential,branchlut,12,35.530000
u64toa_sequential,branchlut,13,36.640000
u64toa_sequential,branchlut,14,37.530000
u64toa_sequential,branchlut,15,39.080000
u64toa_sequential,branchlut,16,39.320000
u64toa_sequential,branchlut,17,71.750000
u64toa_sequential,branchlut,18,70.130000
u64toa_sequential,branchlut,19,70.310000
u64toa_sequential,branchlut,20,70.500000
u64toa_random,branchlut,0,46.847500
u64toa_sequential,count,1,26.530000
u64toa_sequential,count,2,36.820000
u64toa_sequential,count,3,50.560000
u64toa_sequential,count,4,79.310000
u64toa_sequential,count,5,80.870000
u64toa_sequential,count,6,94.770000
u64toa_sequential,count,7,110.870000
u64toa_sequential,count,8,124.950000
u64toa_sequential,count,9,142.420000
u64toa_sequential,count,10,170.220000
u64toa_sequential,count,11,180.720000
u64toa_sequential,count,12,205.950000
u64toa_sequential,count,13,228.090000
u64toa_sequential,count,14,273.210000
u64toa_sequential,count,15,290.750000
u64toa_sequential,count,16,319.710000
u64toa_sequential,count,17,342.240000
u64toa_sequential,count,18,371.940000
u64toa_sequential,count,19,392.960000
u64toa_sequential,count,20,421.820000
u64toa_random,count,0,214.426000
u64toa_sequential,countlut,1,13.960000
u64toa_sequential,countlut,2,10.240000
u64toa_sequential,countlut,3,12.320000
u64toa_sequential,countlut,4,12.870000
u64toa_sequential,countlut,5,14.530000
u64toa_sequential,countlut,6,14.600000
u64toa_sequential,countlut,7,17.530000
u64toa_sequential,countlut,8,18.030000
u64toa_sequential,countlut,9,31.200000
u64toa_sequential,countlut,10,30.400000
u64toa_sequential,countlut,11,32.390000
u64toa_sequential,countlut,12,32.090000
u64toa_sequential,countlut,13,35.060000
u64toa_sequential,countlut,14,36.100000
u64toa_sequential,countlut,15,38.900000
u64toa_sequential,countlut,16,39.940000
u64toa_sequential,countlut,17,53.480000
u64toa_sequential,countlut,18,53.800000
u64toa_sequential,countlut,19,66.190000
u64toa_sequential,countlut,20,66.120000
u64toa_random,countlut,0,48.499000
u64toa_sequential,lut,1,7.160000
u64toa_sequential,lut,2,8.300000
u64toa_sequential,lut,3,24.330000
u64toa_sequential,lut,4,25.380000
u64toa_sequential,lut,5,40.920000
u64toa_sequential,lut,6,42.630000
u64toa_sequential,lut,7,61.200000
u64toa_sequential,lut,8,61.000000
u64toa_sequential,lut,9,74.040000
u64toa_sequential,lut,10,75.560000
u64toa_sequential,lut,11,91.730000
u64toa_sequential,lut,12,93.850000
u64toa_sequential,lut,13,126.510000
u64toa_sequential,lut,14,127.870000
u64toa_sequential,lut,15,147.220000
u64toa_sequential,lut,16,149.530000
u64toa_sequential,lut,17,180.190000
u64toa_sequential,lut,18,183.690000
u64toa_sequential,lut,19,203.070000
u64toa_sequential,lut,20,207.870000
u64toa_random,lut,0,128.869000
u64toa_sequential,mwilson,1,20.510000
u64toa_sequential,mwilson,2,35.930000
u64toa_sequential,mwilson,3,50.070000
u64toa_sequential,mwilson,4,80.910000
u64toa_sequential,mwilson,5,84.030000
u64toa_sequential,mwilson,6,96.840000
u64toa_sequential,mwilson,7,113.940000
u64toa_sequential,mwilson,8,128.720000
u64toa_sequential,mwilson,9,146.690000
u64toa_sequential,mwilson,10,164.490000
u64toa_sequential,mwilson,11,183.030000
u64toa_sequential,mwilson,12,217.020000
u64toa_sequential,mwilson,13,232.610000
u64toa_sequential,mwilson,14,278.830000
u64toa_sequential,mwilson,15,297.210000
u64toa_sequential,mwilson,16,327.370000
u64toa_sequential,mwilson,17,350.330000
u64toa_sequential,mwilson,18,381.610000
u64toa_sequential,mwilson,19,400.260000
u64toa_sequential,mwilson,20,435.120000
u64toa_random,mwilson,0,222.424500
u64toa_sequential,naive,1,20.630000
u64toa_sequential,naive,2,36.590000
u64toa_sequential,naive,3,51.850000
u64toa_sequential,naive,4,69.140000
u64toa_sequential,naive,5,82.980000
u64toa_sequential,naive,6,99.800000
u64toa_sequential,naive,7,113.860000
u64toa_sequential,naive,8,130.460000
u64toa_sequential,naive,9,148.600000
u64toa_sequential,naive,10,168.200000
u64toa_sequential,naive,11,186.440000
u64toa_sequential,naive,12,216.320000
u64toa_sequential,naive,13,235.670000
u64toa_sequential,naive,14,286.420000
u64toa_sequential,naive,15,305.880000
u64toa_sequential,naive,16,334.620000
u64toa_sequential,naive,17,358.550000
u64toa_sequential,naive,18,390.770000
u64toa_sequential,naive,19,414.210000
u64toa_sequential,naive,20,445.390000
u64toa_random,naive,0,230.743000
u64toa_sequential,null,1,2.490000
u64toa_sequential,null,2,2.600000
u64toa_sequential,null,3,2.500000
u64toa_sequential,null,4,2.490000
u64toa_sequential,null,5,2.490000
u64toa_sequential,null,6,2.490000
u64toa_sequential,null,7,2.490000
u64toa_sequential,null,8,2.490000
u64toa_sequential,null,9,2.490000
u64toa_sequential,null,10,2.490000
u64toa_sequential,null,11,2.490000
u64toa_sequential,null,12,2.490000
u64toa_sequential,null,13,2.490000
u64toa_sequential,null,14,2.490000
u64toa_sequential,null,15,2.490000
u64toa_sequential,null,16,2.490000
u64toa_sequential,null,17,2.490000
u64toa_sequential,null,18,2.490000
u64toa_sequential,null,19,2.490000
u64toa_sequential,null,20,2.490000
u64toa_random,null,0,2.500000
u64toa_sequential,sprintf,1,174.810000
u64toa_sequential,sprintf,2,209.120000
u64toa_sequential,sprintf,3,224.560000
u64toa_sequential,sprintf,4,262.710000
u64toa_sequential,sprintf,5,289.480000
u64toa_sequential,sprintf,6,301.280000
u64toa_sequential,sprintf,7,330.100000
u64toa_sequential,sprintf,8,351.460000
u64toa_sequential,sprintf,9,358.820000
u64toa_sequential,sprintf,10,376.760000
u64toa_sequential,sprintf,11,381.640000
u64toa_sequential,sprintf,12,427.780000
u64toa_sequential,sprintf,13,450.440000
u64toa_sequential,sprintf,14,475.430000
u64toa_sequential,sprintf,15,493.030000
u64toa_sequential,sprintf,16,529.690000
u64toa_sequential,sprintf,17,554.620000
u64toa_sequential,sprintf,18,582.590000
u64toa_sequential,sprintf,19,610.290000
u64toa_sequential,sprintf,20,637.370000
u64toa_random,sprintf,0,416.898500
u64toa_sequential,sse2,1,7.180000
u64toa_sequential,sse2,2,8.330000
u64toa_sequential,sse2,3,8.210000
u64toa_sequential,sse2,4,8.100000
u64toa_sequential,sse2,5,12.470000
u64toa_sequential,sse2,6,13.030000
u64toa_sequential,sse2,7,12.880000
u64toa_sequential,sse2,8,13.590000
u64toa_sequential,sse2,9,35.480000
u64toa_sequential,sse2,10,35.680000
u64toa_sequential,sse2,11,35.530000
u64toa_sequential,sse2,12,35.550000
u64toa_sequential,sse2,13,36.470000
u64toa_sequential,sse2,14,36.580000
u64toa_sequential,sse2,15,37.080000
u64toa_sequential,sse2,16,36.420000
u64toa_sequential,sse2,17,61.610000
u64toa_sequential,sse2,18,62.520000
u64toa_sequential,sse2,19,61.040000
u64toa_sequential,sse2,20,61.590000
u64toa_random,sse2,0,49.722500
i64toa_sequential,branchlut,1,12.310000
i64toa_sequential,branchlut,2,13.350000
i64toa_sequential,branchlut,3,13.310000
i64toa_sequential,branchlut,4,13.860000
i64toa_sequential,branchlut,5,17.300000
i64toa_sequential,branchlut,6,18.120000
i64toa_sequential,branchlut,7,19.240000
i64toa_sequential,branchlut,8,20.170000
i64toa_sequential,branchlut,9,49.860000
i64toa_sequential,branchlut,10,43.770000
i64toa_sequential,branchlut,11,44.120000
i64toa_sequential,branchlut,12,44.230000
i64toa_sequential,branchlut,13,45.220000
i64toa_sequential,branchlut,14,51.660000
i64toa_sequential,branchlut,15,46.460000
i64toa_sequential,branchlut,16,47.160000
i64toa_sequential,branchlut,17,84.760000
i64toa_sequential,branchlut,18,80.280000
i64toa_sequential,branchlut,19,82.730000
i64toa_sequential,branchlut,20,81.820000
i64toa_random,branchlut,0,53.147000
i64toa_sequential,count,1,29.970000
i64toa_sequential,count,2,49.230000
i64toa_sequential,count,3,57.680000
i64toa_sequential,count,4,82.490000
i64toa_sequential,count,5,86.200000
i64toa_sequential,count,6,102.020000
i64toa_sequential,count,7,118.910000
i64toa_sequential,count,8,131.150000
i64toa_sequential,count,9,148.130000
i64toa_sequential,count,10,166.790000
i64toa_sequential,count,11,183.820000
i64toa_sequential,count,12,213.590000
i64toa_sequential,count,13,234.570000
i64toa_sequential,count,14,278.760000
i64toa_sequential,count,15,298.410000
i64toa_sequential,count,16,328.570000
i64toa_sequential,count,17,349.940000
i64toa_sequential,count,18,377.880000
i64toa_sequential,count,19,402.410000
i64toa_sequential,count,20,422.310000
i64toa_random,count,0,220.040000
i64toa_sequential,countlut,1,18.390000
i64toa_sequential,countlut,2,17.370000
i64toa_sequential,countlut,3,18.950000
i64toa_sequential,countlut,4,19.650000
i64toa_sequential,countlut,5,21.200000
i64toa_sequential,countlut,6,21.960000
i64toa_sequential,countlut,7,23.750000
i64toa_sequential,countlut,8,24.810000
i64toa_sequential,countlut,9,38.860000
i64toa_sequential,countlut,10,38.810000
i64toa_sequential,countlut,11,38.200000
i64toa_sequential,countlut,12,39.150000
i64toa_sequential,countlut,13,41.790000
i64toa_sequential,countlut,14,43.690000
i64toa_sequential,countlut,15,45.220000
i64toa_sequential,countlut,16,47.110000
i64toa_sequential,countlut,17,62.750000
i64toa_sequential,countlut,18,64.830000
i64toa_sequential,countlut,19,73.070000
i64toa_sequential,countlut,20,72.840000
i64toa_random,countlut,0,54.207500
i64toa_sequential,lut,1,12.110000
i64toa_sequential,lut,2,13.710000
i64toa_sequential,lut,3,29.300000
i64toa_sequential,lut,4,31.690000
i64toa_sequential,lut,5,47.430000
i64toa_sequential,lut,6,47.790000
i64toa_sequential,lut,7,79.350000
i64toa_sequential,lut,8,78.600000
i64toa_sequential,lut,9,83.970000
i64toa_sequential,lut,10,98.000000
i64toa_sequential,lut,11,102.100000
i64toa_sequential,lut,12,105.900000
i64toa_sequential,lut,13,129.630000
i64toa_sequential,lut,14,134.810000
i64toa_sequential,lut,15,162.320000
i64toa_sequential,lut,16,162.620000
i64toa_sequential,lut,17,189.880000
i64toa_sequential,lut,18,195.180000
i64toa_sequential,lut,19,218.730000
i64toa_sequential,lut,20,214.970000
i64toa_random,lut,0,134.284000
i64toa_sequential,mwilson,1,29.770000
i64toa_sequential,mwilson,2,50.610000
i64toa_sequential,mwilson,3,74.400000
i64toa_sequential,mwilson,4,92.590000
i64toa_sequential,mwilson,5,113.320000
i64toa_sequential,mwilson,6,134.750000
i64toa_sequential,mwilson,7,153.900000
i64toa_sequential,mwilson,8,176.780000
i64toa_sequential,mwilson,9,199.390000
i64toa_sequential,mwilson,10,221.330000
i64toa_sequential,mwilson,11,241.430000
i64toa_sequential,mwilson,12,277.400000
i64toa_sequential,mwilson,13,317.070000
i64toa_sequential,mwilson,14,347.800000
i64toa_sequential,mwilson,15,382.960000
i64toa_sequential,mwilson,16,416.470000
i64toa_sequential,mwilson,17,451.220000
i64toa_sequential,mwilson,18,487.570000
i64toa_sequential,mwilson,19,522.160000
i64toa_sequential,mwilson,20,539.200000
i64toa_random,mwilson,0,292.378000
i64toa_sequential,naive,1,24.510000
i64toa_sequential,naive,2,40.070000
i64toa_sequential,naive,3,54.880000
i64toa_sequential,naive,4,70.470000
i64toa_sequential,naive,5,87.840000
i64toa_sequential,naive,6,105.940000
i64toa_sequential,naive,7,120.490000
i64toa_sequential,naive,8,135.890000
i64toa_sequential,naive,9,155.910000
i64toa_sequential,naive,10,170.730000
i64toa_sequential,naive,11,190.380000
i64toa_sequential,naive,12,220.020000
i64toa_sequential,naive,13,245.540000
i64toa_sequential,naive,14,291.900000
i64toa_sequential,naive,15,308.530000
i64toa_sequential,naive,16,336.880000
i64toa_sequential,naive,17,361.840000
i64toa_sequential,naive,18,392.590000
i64toa_sequential,naive,19,417.080000
i64toa_sequential,naive,20,436.350000
i64toa_random,naive,0,232.001500
i64toa_sequential,null,1,5.700000
i64toa_sequential,null,2,5.800000
i64toa_sequential,null,3,5.720000
i64toa_sequential,null,4,5.700000
i64toa_sequential,null,5,5.700000
i64toa_sequential,null,6,5.700000
i64toa_sequential,null,7,5.700000
i64toa_sequential,null,8,5.700000
i64toa_sequential,null,9,5.700000
i64toa_sequential,null,10,5.700000
i64toa_sequential,null,11,5.700000
i64toa_sequential,null,12,5.700000
i64toa_sequential,null,13,5.700000
i64toa_sequential,null,14,5.700000
i64toa_sequential,null,15,5.700000
i64toa_sequential,null,16,5.700000
i64toa_sequential,null,17,5.700000
i64toa_sequential,null,18,5.700000
i64toa_sequential,null,19,5.700000
i64toa_sequential,null,20,5.700000
i64toa_random,null,0,2.499500
i64toa_sequential,sprintf,1,187.670000
i64toa_sequential,sprintf,2,225.460000
i64toa_sequential,sprintf,3,241.210000
i64toa_sequential,sprintf,4,286.060000
i64toa_sequential,sprintf,5,314.570000
i64toa_sequential,sprintf,6,328.490000
i64toa_sequential,sprintf,7,347.140000
i64toa_sequential,sprintf,8,373.740000
i64toa_sequential,sprintf,9,373.690000
i64toa_sequential,sprintf,10,393.840000
i64toa_sequential,sprintf,11,399.170000
i64toa_sequential,sprintf,12,445.920000
i64toa_sequential,sprintf,13,474.280000
i64toa_sequential,sprintf,14,501.470000
i64toa_sequential,sprintf,15,517.890000
i64toa_sequential,sprintf,16,544.900000
i64toa_sequential,sprintf,17,569.170000
i64toa_sequential,sprintf,18,605.590000
i64toa_sequential,sprintf,19,619.810000
i64toa_sequential,sprintf,20,642.070000
i64toa_random,sprintf,0,433.310500
i64toa_sequential,sse2,1,11.240000
i64toa_sequential,sse2,2,12.700000
i64toa_sequential,sse2,3,12.970000
i64toa_sequential,sse2,4,13.470000
i64toa_sequential,sse2,5,17.300000
i64toa_sequential,sse2,6,18.160000
i64toa_sequential,sse2,7,19.100000
i64toa_sequential,sse2,8,19.400000
i64toa_sequential,sse2,9,39.930000
i64toa_sequential,sse2,10,39.740000
i64toa_sequential,sse2,11,39.410000
i64toa_sequential,sse2,12,39.410000
i64toa_sequential,sse2,13,39.640000
i64toa_sequential,sse2,14,39.960000
i64toa_sequential,sse2,15,40.610000
i64toa_sequential,sse2,16,39.440000
i64toa_sequential,sse2,17,67.780000
i64toa_sequential,sse2,18,68.040000
i64toa_sequential,sse2,19,66.960000
i64toa_sequential,sse2,20,69.090000
i64toa_random,sse2,0,52.590000
</textarea>
</div>
<div class="row" id="downloadDD" style="display: none">
<div class="btn-group pull-right" >
    <button class="btn dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-picture"></span></button>
    <ul class="dropdown-menu">
        <li><a tabindex="-1" href="#" dltype="image/jpeg">JPEG</a></li>
        <li><a tabindex="-1" href="#" dltype="image/png">PNG</a></li>
        <li><a tabindex="-1" href="#" dltype="application/pdf">PDF</a></li>
        <li><a tabindex="-1" href="#" dltype="image/svg+xml">SVG</a></li>
    </ul>
</div>
</div>
<div class="row" id="showMD" style="display: none">
<div class="btn-group pull-right" >
    <button class="btn dropdown-toggle" data-toggle="collapse"><span class="glyphicon glyphicon-list-alt"></span></button>
</div>
<br/>
<br/>
<div class="collapse">
<textarea class="form-control" rows="5" readonly>
</textarea>
</div>
</div>
<form method="post" action="http://export.highcharts.com/" id="imageGetForm">
    <input type="hidden" name="filename" id="imageFilename" value="" />
    <input type="hidden" name="type" id="imageGetFormTYPE" value="" />
    <input type="hidden" name="width" value="900" />
    <input type="hidden" name="svg" value="" id="imageGetFormSVG" />
</form>
</div>
</body>
</html>